import os
import yaml

def update_app_config(config_dict: dict) -> str:
    """
    批量更新 YAML 配置文件中某个应用的所有配置字段。
    输入格式应为：
    {
      "type": "mysql",
      "config": {
        "password": "123456",
        "user": "root",
        "port": 90
      }
    }
    :param config_dict: 包含 type 和 config 字段的配置字典
    :return: 更新结果信息
    """
    yaml_file = os.path.join(os.path.dirname(__file__), '../config/app_config.yaml')

    try:
        # 检查输入格式
        app_type = config_dict.get("type")
        app_config = config_dict.get("config")
        if not app_type or not isinstance(app_config, dict):
            return "配置格式错误，必须包含 'type' 和 'config' 字段。"

        # 读取 YAML 文件
        with open(yaml_file, "r", encoding="utf-8") as f:
            config = yaml.safe_load(f)

        if app_type not in config:
            return f"YAML 中不存在 '{app_type}' 配置模块。"

        if not isinstance(config[app_type], dict):
            return f"YAML 中 '{app_type}' 不是一个字典结构，无法更新。"

        # 更新字段
        for k, v in app_config.items():
            config[app_type][k] = v

        # 写回文件
        with open(yaml_file, "w", encoding="utf-8") as f:
            yaml.dump(config, f, sort_keys=False, allow_unicode=True, width=1000)

        return f"{app_type} 配置更新成功：{app_config}"
    except Exception as e:
        return f"更新失败：{str(e)}"


if __name__ == "__main__":

    config_data1 = {
    "type": "mysql",
    "config": {
        "password": "12345622",
        "user": "root1331",
        "port": 92310,
        "config_file": "/etc/mysql/my.cnf/1111"
    }
    }
    config_data2 = {
    "type": "nginx",
    "config": {
        "port": 1000,
        "config_file": "/etc/nginx.conf"
    }
    }
    print(update_app_config(config_data2))
